<script>

    let p = new Promise((resolve, reject) => {

        resolve("成功")

    })

    // then 和catch 都是promise实例的方法
    // then是用来捕获正确的结果的（then可以捕获上面链式操作的正确结果）
    // catch是用来捕获错误的信息的（catch可以捕获上面链式操作的错误信息）
    // then和catch都可以实现链式操作，因为他们的返回值都是promise
    // 无论then或catch返回的promise，这个promise成功则走下一个then，失败则走下一个catch

    p.then((res) => {

        console.log(res);//成功
        return 123

    }).then((res) => {

        console.log(res);// 123
        return "abc"

    }).then((res) => {

        console.log(res);//abc
        return [1, 2, 3]

    }).then((res) => {

        console.log(res);//[1, 2, 3]
        return { name: "zs" }

    }).then((res) => {

        console.log(res);//{ name: "zs" }
        return function(){}

    }).then((res) => {

        console.log(res);//ƒ (){}
        return new Promise((resolve,reject)=>{
            resolve("这是另一个promise")
        })

    }).then((res) => {

        console.log(res,111);//这是另一个promise


        return "then"

    }).catch((err)=>{
        console.log(err);//catch可以捕获以上任何位置的出错

        return "catch"
        
    }).then((res)=>{
        console.log(res);//"catch"
    })

















</script>